package cn.jja8.bukkit.bukkitwindowtool.window;

import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;

public interface Button {
    /**
     * 获取用于展示的物品
     * */
    ItemStack getItemStack();
    /**
     * 当按钮被添加到window时。
     * @param window 对应的window
     * @param flushWork 次窗口的刷新对象
     * */
    default void beAdd(Window window,FlushWork flushWork){}

    /**
     * 当按钮被玩家点击时调用
     * */
    default void click(InventoryClickEvent inventoryClickEvent, Player player){}

    /**
     * 当按钮被其他按钮替换时
     * 也就是新的按钮被添加到本按钮的位置时，本按钮被替换掉。
     * @param button 新的按钮，如果是null则是按钮被删掉。
     * */
    default void beReplaced(Button button){}
}
